import { login, logout, getInfo } from '@/api/user'
import { getToken, setToken, removeToken } from '@/utils/auth'
import { joinMenusParams } from '@/utils/index'
import router, { resetRouter } from '@/router'

const state = {
  token: getToken(),
  roleId: '',
  roleName: '',
  userName: '',
  departmentName:'',
  loginAccount: '',
  permissionCodes: [],
  menus: [],
  departmentId: ''
}

const mutations = {
  SET_TOKEN: (state, token) => {
    state.token = token
  },
  SET_LOGINACCOUNT: (state, loginAccount) => {
    state.loginAccount = loginAccount
  },
  SET_USERNAME: (state, userName) => {
    state.userName = userName
  },
  SET_ROLENAME: (state, roleName) => {
    state.roleName = roleName
  },
  SET_ROLEID: (state, roleId) => {
    state.roleId = roleId
  },
  SET_MENUS: (state, menus) => {
    state.menus = menus
  },
  SET_PERMISSIONCODES: (state, permissionCodes) => {
    state.permissionCodes = permissionCodes
  },
  SET_DEPARTMENTID: (state, departmentId) => {
    state.departmentId = departmentId
  },
  SET_DEPARTMENTNAME: (state, departmentName) => {
    state.departmentName = departmentName
  }
}

const actions = {
  // user login
  login({ commit }, userInfo) {
    return new Promise((resolve, reject) => {
      login(userInfo).then(response => {
        const { data } = response
        console.log(data, '登录数据')
        commit('SET_TOKEN', data.token)
        commit('SET_DEPARTMENTID', data.departmentId)
        commit('SET_DEPARTMENTNAME', data.departmentName)
        setToken(data.token)
        resolve()
      }).catch(error => {
        reject(error)
      })
    })
  },

  // get user info
  getInfo({ commit, state }) {
    return new Promise((resolve, reject) => {
      getInfo().then(response => {
          const { data } = response

          const {
              currentUserInfo: { roleId, roleName, userName, loginAccount },
              menus,
              permissionCodes
          } = data
          commit('SET_ROLEID', roleId)
          commit('SET_ROLENAME', roleName)
          commit('SET_USERNAME', userName)
          commit('SET_LOGINACCOUNT', loginAccount)
          commit('SET_MENUS', joinMenusParams(menus))
          commit('SET_PERMISSIONCODES', permissionCodes)

          resolve(data)
      }).catch(error => {
          reject(error)
      })

      // const data = [{
      //   'canCache': true,
      //   'childMenus': [{
      //     'canCache': true,
      //     'childMenus': [],
      //     'code': 'SystemRole',
      //     'icon': '',
      //     'name': '角色管理',
      //     'uri': '/system/role'
      //   },
      //   {
      //     'canCache': true,
      //     'childMenus': [],
      //     'code': 'SystemEquipment',
      //     'icon': '',
      //     'name': '设备参数管理',
      //     'uri': '/system/equipment'
      //   },
      //   {
      //     'canCache': true,
      //     'childMenus': [],
      //     'code': 'SystemDepartment',
      //     'icon': '',
      //     'name': '科室管理',
      //     'uri': '/system/department'
      //   }
      //   ],
      //   'code': 'System',
      //   'icon': 's-tools',
      //   'name': '系统配置',
      //   'uri': '/system'
      // },
      // {
      //   'canCache': true,
      //   'childMenus': [{
      //     'canCache': true,
      //     'childMenus': [],
      //     'code': 'UserAccount',
      //     'icon': '',
      //     'name': '账号管理',
      //     'uri': '/user/account'
      //   }],
      //   'code': 'User',
      //   'icon': 'user',
      //   'name': '用户管理',
      //   'uri': '/user'
      // },
      // {
      //   'canCache': true,
      //   'childMenus': [{
      //     'canCache': true,
      //     'childMenus': [{
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'LifeFinanceInput',
      //       'icon': '',
      //       'name': '入库管理',
      //       'uri': '/life/finance/input'
      //     },
      //     {
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'LifeFinanceOutput',
      //       'icon': '',
      //       'name': '出库管理',
      //       'uri': '/life/finance/output'
      //     },
      //     {
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'LifeFinanceDeploy',
      //       'icon': '',
      //       'name': '调配管理',
      //       'uri': '/life/finance/deploy'
      //     },
      //     {
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'LifeFinanceReturn',
      //       'icon': '',
      //       'name': '退库管理',
      //       'uri': '/life/finance/return'
      //     },
      //     {
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'LifeFinanceScrap',
      //       'icon': '',
      //       'name': '报废管理',
      //       'uri': '/life/finance/scrap'
      //     },
      //     {
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'LifeFinanceAdvance',
      //       'icon': '',
      //       'name': '预付款管理',
      //       'uri': '/life/finance/advance'
      //     },
      //     {
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'LifeFinanceSettlement',
      //       'icon': '',
      //       'name': '结款管理',
      //       'uri': '/life/finance/settlement'
      //     },
      //     {
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'LifeFinanceDepreciation',
      //       'icon': '',
      //       'name': '折旧管理',
      //       'uri': '/life/finance/depreciation'
      //     },
      //     {
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'LifeFinanceResources',
      //       'icon': '',
      //       'name': '经费来源',
      //       'uri': '/life/finance/resources'
      //     },
      //     {
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'LifeFinanceMould',
      //       'icon': '',
      //       'name': '设备入库缓存字典管理',
      //       'uri': '/life/finance/mould'
      //     },
      //     {
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'LifeFinanceWarehouse',
      //       'icon': '',
      //       'name': '仓库字典管理',
      //       'uri': '/life/finance/warehouse'
      //     },
      //     {
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'LifeFinancePayment',
      //       'icon': '',
      //       'name': '支付方式字典管理',
      //       'uri': '/life/finance/payment'
      //     },
      //     {
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'LifeFinanceDetail',
      //       'icon': '',
      //       'name': '设备明细查询',
      //       'uri': '/life/finance/detail'
      //     }
      //     ],
      //     'code': 'LifeFinance',
      //     'icon': '',
      //     'name': '财务管理',
      //     'uri': '/life/finance'
      //   },
      //   {
      //     'canCache': true,
      //     'childMenus': [],
      //     'code': 'LifeFirm',
      //     'icon': '',
      //     'name': '厂商管理',
      //     'uri': '/life/firm'
      //   }
      //   ],
      //   'code': 'Life',
      //   'icon': 'life',
      //   'name': '全生命周期管理',
      //   'uri': '/life'
      // },
      // {
      //   'canCache': true,
      //   'childMenus': [{
      //     'canCache': true,
      //     'childMenus': [{
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'BenefitCostMonth',
      //       'icon': '',
      //       'name': '医疗设备报表',
      //       'uri': '/benefit/cost/month'
      //     },
      //     {
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'BenefitCostYield',
      //       'icon': '',
      //       'name': '医疗设备收益率查询',
      //       'uri': '/benefit/cost/yield'
      //     },
      //     {
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'BenefitCostAnalysis',
      //       'icon': '',
      //       'name': '成本效益分析',
      //       'uri': '/benefit/cost/analysis'
      //     },
      //     {
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'BenefitCostCharge',
      //       'icon': '',
      //       'name': '收费项目设置',
      //       'uri': '/benefit/cost/charge'
      //     },
      //     {
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'BenefitCostSubject',
      //       'icon': '',
      //       'name': '会计科目设置',
      //       'uri': '/benefit/cost/subject'
      //     }
      //     ],
      //     'code': 'BenefitCost',
      //     'icon': '',
      //     'name': '成本效益',
      //     'uri': '/benefit/cost'
      //   },
      //   {
      //     'canCache': true,
      //     'childMenus': [{
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'BenefitUseRun',
      //       'icon': '',
      //       'name': '医疗设备运行日志',
      //       'uri': '/benefit/use/run'
      //     },
      //     {
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'BenefitUseExponent',
      //       'icon': '',
      //       'name': '医疗设备效率KPI指标分析',
      //       'uri': '/benefit/use/exponent'
      //     },
      //     {
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'BenefitUseMonth',
      //       'icon': '',
      //       'name': '医疗设备运行月报',
      //       'uri': '/benefit/use/month'
      //     }
      //     ],
      //     'code': 'BenefitUse',
      //     'icon': '',
      //     'name': '使用效率',
      //     'uri': '/benefit/use'
      //   }
      //   ],
      //   'code': 'Benefit',
      //   'icon': 'benefit',
      //   'name': '效率与效益管理',
      //   'uri': '/benefit'
      // },
      // {
      //   'canCache': true,
      //   'childMenus': [{
      //     'canCache': true,
      //     'childMenus': [{
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'ActionNetOperation',
      //       'icon': '',
      //       'name': '医疗设备运行基础数据',
      //       'uri': '/action/net/operation'
      //     },
      //     {
      //       'canCache': true,
      //       'childMenus': [],
      //       'code': 'ActionNetMaintenance',
      //       'icon': '',
      //       'name': '医疗设备运维基础数据',
      //       'uri': '/action/net/maintenance'
      //     }
      //     ],
      //     'code': 'ActionNet',
      //     'icon': '',
      //     'name': '联网管理',
      //     'uri': '/action/net'
      //   }],
      //   'code': 'Action',
      //   'icon': 'action',
      //   'name': '运行数据管理',
      //   'uri': '/action'
      // }
      // ]

      // commit('SET_MENUS', joinMenusParams(data))
      // commit('SET_DEPARTMENTID', 1)

      // resolve()
    })

    // new Promise((resolve, reject) => {
    //     console.log(777)

    //     console.log(000)
    //     commit('SET_MENUS', joinMenusParams(data))
    //     console.log("222222222")

    // })
  },

  // user logout
  logout({ commit, state, dispatch }) {
    return new Promise((resolve, reject) => {
      logout(state.token).then(() => {
        commit('SET_TOKEN', '')
        commit('SET_ROLEID', '')
        commit('SET_ROLENAME', '')
        commit('SET_USERNAME', '')
        commit('SET_LOGINACCOUNT', '')
        commit('SET_MENUS', [])
        commit('SET_PERMISSIONCODES', [])
        removeToken()
        resetRouter()

        // reset visited views and cached views
        // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2485
        dispatch('tagsView/delAllViews', null, { root: true })

        resolve()
      }).catch(error => {
        reject(error)
      })
    })
  },

  // remove token
  resetToken({ commit }) {
    return new Promise(resolve => {
      commit('SET_TOKEN', '')
      commit('SET_ROLEID', '')
      removeToken()
      resolve()
    })
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
